package com.chinaedu.oc.controller.product;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.chinaedu.oc.constant.Constant;
import com.chinaedu.oc.po.dto.PubOutputDto;
import com.chinaedu.oc.po.productline.ProductLineKey;
import com.chinaedu.oc.po.productline.dto.AddProductLineInput;
import com.chinaedu.oc.po.productline.dto.AddProductLineOutput;
import com.chinaedu.oc.po.productline.dto.ConfigProductLineKeyInput;
import com.chinaedu.oc.po.productline.dto.ConfigProductLineKeyOutput;
import com.chinaedu.oc.po.productline.dto.CreateProductLineKeyOutput;
import com.chinaedu.oc.po.productline.dto.QueryIsCanStartUseInput;
import com.chinaedu.oc.po.productline.dto.QueryIsCanStartUseOutput;
import com.chinaedu.oc.po.productline.dto.QueryProductLineInput;
import com.chinaedu.oc.po.productline.dto.QueryProductLineOutput;
import com.chinaedu.oc.po.productline.dto.StartUseProductLineInput;
import com.chinaedu.oc.serv.product.IProductLine;
import com.chinaedu.oc.uri.IName;
import com.chinaedu.oc.util.common.CheckParamException;
import com.chinaedu.oc.util.common.JsonUtil;

/**
 * 产品线controller
 * @Description: 
 * @author A18ccms a18ccms_gmail_com 
 * @date 2017年5月9日 上午9:50:09 
 *
 */
@Controller
public class ProductLineController {
	
	@Autowired
	IProductLine iProductLine;
	
	/**
	 * 添加/更新产品线
	 * @Description: 
	 * @param @param data
	 * @param @return    
	 * @return AddProductLineOutput    返回类型 
	 * @throws
	 */
	@ResponseBody
	@RequestMapping(IName.ProductLine.ADD_UPDATE_PRODUCT_LINE)
	public AddProductLineOutput addProductLine(String data) {
		AddProductLineInput input = JsonUtil.toBean(data, AddProductLineInput.class);
		
		AddProductLineOutput out = new AddProductLineOutput();
		try {
			out = iProductLine.addOrUpdateProductLine(input);
		} catch (CheckParamException e) {
			out.setStatus(Constant.FALSE);
			out.setMsg(e.getErrorMsg());
		}
		
		return out;
	}
	
	/**
	 * 配置产品线
	 * @Description: 
	 * @param @param data
	 * @param @return    
	 * @return PubOutputDto    返回类型 
	 * @throws
	 */
	@ResponseBody
	@RequestMapping(IName.ProductLine.CONFIG_PRODUCT_LINE)
	public PubOutputDto configProductLineKey(String data) {
		ConfigProductLineKeyInput input = JsonUtil.toBean(data, ConfigProductLineKeyInput.class);
		
		PubOutputDto out = new PubOutputDto();
		try {
			out = iProductLine.configProductLineKey(input);
		} catch (CheckParamException e) {
			out.setStatus(Constant.FALSE);
			out.setMsg(e.getErrorMsg());
		}
		
		return out;
	}
	
	/**
	 * 产生秘钥
	 * @Description: 
	 * @param @return    
	 * @return CreateProductLineKeyOutput    返回类型 
	 * @throws
	 */
	@ResponseBody
	@RequestMapping(IName.ProductLine.CREATE_PRODUCT_LINE_KEY)
	public CreateProductLineKeyOutput createProductLineKey() {
		return iProductLine.createProductLineKey();
	}
	
	/**
	 * 启用停用产品线
	 * @Description: 
	 * @param @param data
	 * @param @return    
	 * @return PubOutputDto    返回类型 
	 * @throws
	 */
	@ResponseBody
	@RequestMapping(IName.ProductLine.START_STOP_USE_PRODUCT_LINE)
	public PubOutputDto startUserProductLine(String data) {
		StartUseProductLineInput input = JsonUtil.toBean(data, StartUseProductLineInput.class);
		PubOutputDto out = iProductLine.startUseProductLine(input);
		
		return out;
	}
	/**
	 * 查询产品线
	 * @Description: 
	 * @param @param data
	 * @param @return    
	 * @return QueryProductLineOutput    返回类型 
	 * @throws
	 */
	@ResponseBody
	@RequestMapping(IName.ProductLine.QUERY_PRODUCT_LINE)
	public QueryProductLineOutput queryProductLine(String data) {
		QueryProductLineInput input = JsonUtil.toBean(data, QueryProductLineInput.class);
		QueryProductLineOutput out = iProductLine.queryProductLine(input);
		
		return out;
	}
	/**
	 * 查询秘钥
	 * @Description: TODO
	 * @param @param data
	 * @param @return    
	 * @return ConfigProductLineKeyInput    返回类型 
	 * @throws
	 */
	@ResponseBody
	@RequestMapping(IName.ProductLine.QUERY_PRODUCT_LINE_KEY)
	public ConfigProductLineKeyOutput queryKey(String data) {
		ConfigProductLineKeyInput input = JsonUtil.toBean(data, ConfigProductLineKeyInput.class);
		ConfigProductLineKeyOutput out = iProductLine.queryKeyByProductLineId(input.getProductLineKey().getProductLine());		
		return out;
	}
}
